This ghetto patch attempts to fix shared folder automounting for guests running
Linux 4.16, and also suggests an alternative to mount.vboxsf.

diff -uprb VirtualBox-5.2.8.orig/src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp VirtualBox-5.2.8/src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp
--- VirtualBox-5.2.8.orig/src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp	2018-02-26 17:57:30.000000000 +0200
+++ VirtualBox-5.2.8/src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp	2018-04-07 21:00:05.785735622 +0300
@@ -346,6 +346,13 @@ static int vbsvcAutoMountSharedFolder(co
                       "vboxsf",
                       fFlags,
                       &mntinf);
+        if (r == -1 && errno == EINVAL)
+        {
+            /* Mainline vboxsf accepts regular mount opts. */
+            char mount_opts[1024];
+            snprintf(mount_opts, 1024, "gid=%d,dmode=0770,fmode=0770", mntinf.gid);
+            r = mount(pszShareName, pszMountPoint, "vboxsf", fFlags, mount_opts);
+        }
         if (r == 0)
         {
             VGSvcVerbose(0, "vbsvcAutoMountWorker: Shared folder '%s' was mounted to '%s'\n", pszShareName, pszMountPoint);
diff -uprb VirtualBox-5.2.8.orig/src/VBox/Additions/linux/sharedfolders/mount.vboxsf.c VirtualBox-5.2.8/src/VBox/Additions/linux/sharedfolders/mount.vboxsf.c
--- VirtualBox-5.2.8.orig/src/VBox/Additions/linux/sharedfolders/mount.vboxsf.c	2018-02-26 17:57:34.000000000 +0200
+++ VirtualBox-5.2.8/src/VBox/Additions/linux/sharedfolders/mount.vboxsf.c	2018-04-07 21:39:38.121577588 +0300
@@ -485,6 +485,11 @@ main(int argc, char **argv)
      *       to keep this code here slick without having VbglR3.
      */
     err = mount(host_name, mount_point, "vboxsf", flags, &mntinf);
+    if (err == -1 && errno == EINVAL)
+    {
+        /* The mount.vboxsf helper should not be used with mainline vboxsf. */
+        panic("mount.vboxsf cannot be used with mainline vboxsf; instead use:\n\n    mount -cit vboxsf NAME MOUNTPOINT\n\n");
+    }
     if (err == -1 && errno == EPROTO)
     {
         /* Sometimes the mount utility messes up the share name.  Try to
